import com.alibaba.fastjson.JSONObject;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 *  此类只是一个回调接口代码样例 Controller代码样例
 *
 */
@RestController
public class CallBackController {


    /**
     * 接收时习知事件的回调接口，比如回调url是  域名/上下文路径/sxzcallback ,回调url 在时习知开放平台应用里设置
     *
     * @param body 回调事件请求体， 比如 {"timeStamp":"1694521661882","encrypContent":"JUXND7Zt3OHmcytZzYCW75r6iN9h1lR/NTqluZyzXxdViJlDTA+fzZU9kEhjNqp5yku//9i2/MLHFON9yBmbZfpxKWlOVDf3FUJlhBjqt5/4q/sxrLvpSMtiTgoAg9gQ7dAdVd/yOMPkgH6uhSEhDG9IkThPOx6J6lTxrYDHMYuR6qm2shDXXww7XD03iQlHZOKKbjuX2J3GyeHXeF6jx5xEZ30g5zgwt8HCUvAjItkurlX5S78M+MAHTT7qs9VEITcvXKnoIBGN9TUzGW5VCvcrd6L7uk/rFyzMKXZC3+pEhd8KMc5CpJJJiPKXHwxlgYHw01c5f/WKqdHNwPP2T9byBCkKTWcyjQ==","sign":"7b7c4c06586970a2ff30b1736a29f78d0122451cfb7a2ea1c621f7cc51e15c60","nonce":"391deaac594a4a9fb4980234e3b56794","type":"ENROLL"}
     * @return
         *
     */
    @RequestMapping("sxzcallback")
    public String doSxzCallback(@RequestBody String body){
        CallBackBody backBody=JSONObject.parseObject(body,CallBackBody.class);
        String token="";//消息校验token，在时习知开放平台应用里设置

        //此处要校验签名是否正确，防止比其他人伪造数据进行回调
        if(!CallBackUtil.checkCallBackBody(backBody,token)){
            return "fail";
        }
        String key=""; //消息加密key，在时习知开放平台应用里设置
        String content=CallBackUtil.decrypt(backBody.getEncrypContent(),key);
        // 在此处根据 backBody.getType()返回的事件类型调用service处理对应的业务逻辑，比如 ENROLL: 班级学员事件，EXAM_MEMBER: 考试考生事件。由于回调有重试机制，需要做好幂等性，
        //doSomething();

        return "success";  // 如果业务处理成功一定要返回success，否则会重试。
    }
}
